/**
 * 悬浮输出日志
 * @Autor: 白丁
 * @QQ: 479360791
 * @param {number} linesCount - 显示日志行数,默认6行
 * @param {number} x - 悬浮窗左上角位置x,默认0
 * @param {number} y - 悬浮窗左上角位置y,默认10
 * @param {boolean} isLog - 是否打印到控制台,默认打印
 * @example 使用前调用 floatyLogInit(linesCount,x,y,isLog) 初始化配置
 *          用floatyLog()输出日志
 */
function floatyLogInit(linesCount,x,y,isLog){
    linesCount = linesCount || 6;
    if(typeof linesCount != 'number') linesCount = 6;
    if(typeof x != 'number') x = 0;
    if(typeof y != 'number') y = 10;
    if(typeof isLog != 'boolean') isLog = true;

    let w = floaty.rawWindow(
        <horizontal id='move' background='#bb696969' paddingLeft="10" paddingRight="10" w="*">
            <button id='log' textSize="13dp" textColor="white" style="Widget/AppCompat.Button.Borderless" text='[开始运行]' textStyle='bold'
                layout_gravity="right" layout_weight='5' layout_width="wrap_content" layout_height="wrap_content" />
        </horizontal>
    );
    w.exitOnClose();
    w.setTouchable(false);
    ui.run(() => {w.setPosition(x, y)});
        
    let nowLogArr = [];
    
    floatyLog = function (){
        let s = '['+dateFormat(new Date(),"hh:mm:ss")+'] '
        for(let param of arguments) s += param + ' ';
        nowLogArr.push(s);

        if(nowLogArr.length>linesCount) nowLogArr.shift();
        let printContent = nowLogArr.join('\n');

        ui.run(() => {w.log.text(printContent)})
        if(isLog) log(s);
    }
    
    function dateFormat(date,fmt) { 
        let o = { 
            "M+" : date.getMonth()+1,     
            "d+" : date.getDate(),     
            "h+" : date.getHours(),    
            "m+" : date.getMinutes(),     
            "s+" : date.getSeconds(),    
            "S" : date.getMilliseconds()    
        }; 
        if(/(y+)/.test(fmt)){
            fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length)); 
        } 
        
        for(var k in o){
            if(new RegExp("("+ k +")").test(fmt)){
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); 
            } 
        } 
        return fmt; 
    }
    return floatyLog;
}

const logger = floatyLogInit(6,0,10,true) //初始化悬浮框配置,全局调用一次即可.
log("日志初始化成功")
// let i=0;
// while(~sleep(1000)){
//     logger('This is a log' , i++)//使用该函数输出日志
// }


module.exports = logger